import { ref,toRefs } from "vue";

type paginationParams={
    pageNum:number;
    pageSize:number;
}

export default function useTable<
T extends {list :any[];total:number},
P extends paginationParams = paginationParams 
>(fn: (params:P)=>RES<T>,searchParams?:Object){
    const params = {
pageNum:1,
pageSize:10,
    };
    const list = ref<(T['list'])[]>([]);
    const total = ref(0);
  const fetch = () =>{
    fn({...(params as P),...searchParams}).then((res)=>{
        if(res.code===200){
            list.value=res.data.list;
            total.value=res.data.total;
        }
    });
  }
  fetch()

  const pageChangeHandle = ()=>{
    fetch()
  }
  const pageSizeChangeHandle = () =>{
    fetch()
  } 
  const searchHandle = () =>{
    fetch()
  }
    return{
        list,
       ...toRefs(params),
       total,
       pageChangeHandle,
       pageSizeChangeHandle,
       searchHandle,
    }
}